جزوه · پردازش فایل‌ها (sort, uniq, cat, split, head, tail, od) ← بازگشت به فهرست
📘 فصل اول · قسمت دوازدهم پردازش فایل‌ها
📅 تاریخ: ۱۸ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian

▍ مقدمه

در این جلسه با پردازش فایل‌ها در لینوکس آشنا می‌شویم. ابزارهایی که یاد می‌گیریم به ما کمک می‌کنند تا فایل‌ها را مشاهده، ترکیب، جدا، مرتب و تحلیل کنیم. این ابزارها جزو ابزارهای اصلی در خط فرمان هستند.

🔑 بخش‌های اصلی این جلسه:
  • اتصال فایل‌ها: cat و paste
  • جدا کردن فایل‌ها: split
  • نمایش بخشی از فایل: head و tail
  • مرتب‌سازی و حذف تکراری‌ها: sort و uniq
  • مشاهده محتوای خام فایل: od

▍ اتصال فایل‌ها (cat و paste)

• cat (مشاهده و اتصال)

cat مخفف Concatenate است و برای نمایش محتوای فایل یا اتصال چند فایل به هم استفاده می‌شود.

┌──(ya3in㉿kali)-[~] └─$ cat file1.txt This is file1

نمایش محتوای فایل file1.txt.

┌──(ya3in㉿kali)-[~] └─$ cat file1.txt file2.txt > combined.txt

اتصال محتوای دو فایل و ذخیره در combined.txt.

• paste (چسباندن کنار هم)

paste فایل‌ها را ستون به ستون (کنار هم) می‌چسباند. یعنی خط اول هر فایل را کنار هم قرار می‌دهد.

┌──(ya3in㉿kali)-[~] └─$ paste names.txt ages.txt ali 25
reza 30
sara 28

ستون اول از names.txt و ستون دوم از ages.txt.

▍ جدا کردن فایل‌ها (split)

split یک فایل بزرگ را به چند فایل کوچک‌تر تقسیم می‌کند.

┌──(ya3in㉿kali)-[~] └─$ split -l 100 bigfile.txt

فایل bigfile.txt را به فایل‌های ۱۰۰ خطی (با نام‌های xaa، xab، ...) تقسیم می‌کند.

▍ مشاهده بخشی از فایل (head و tail)

• head (ابتدا)

head خطوط ابتدایی فایل را نمایش می‌دهد (پیش‌فرض ۱۰ خط).

┌──(ya3in㉿kali)-[~] └─$ head -n 5 file.txt 5 خط اول فایل نمایش داده می‌شود

نمایش ۵ خط اول فایل با -n 5 .

• tail (انتها)

tail خطوط انتهایی فایل را نمایش می‌دهد (پیش‌فرض ۱۰ خط).

┌──(ya3in㉿kali)-[~] └─$ tail -n 3 file.txt 3 خط آخر فایل نمایش داده می‌شود

نمایش ۳ خط آخر فایل با -n 3 .

┌──(ya3in㉿kali)-[~] └─$ tail -f logfile.log

دنبال کردن (Follow) تغییرات فایل لاگ به صورت زنده با -f .

▍ مرتب‌سازی و حذف تکراری‌ها (sort و uniq)

• sort (مرتب‌سازی)

sort خطوط یک فایل را مرتب می‌کند.

┌──(ya3in㉿kali)-[~] └─$ sort numbers.txt 1
2
3
10
20
100

مرتب‌سازی الفبایی (پیش‌فرض) - ۱۰ قبل از ۲!

┌──(ya3in㉿kali)-[~] └─$ sort -n numbers.txt 1
2
3
10
20
100

مرتب‌سازی عددی با -n - ۲ قبل از ۱۰!

• uniq (حذف تکراری‌ها)

uniq خطوط تکراری مجاور را حذف می‌کند. معمولاً بعد از sort استفاده می‌شود.

┌──(ya3in㉿kali)-[~] └─$ sort names.txt | uniq

مرتب‌سازی و حذف نام‌های تکراری.

⭐ ترکیب قدرتمند (مطابق درخواست شما):
┌──(ya3in㉿kali)-[~] └─$ sort -n numbers.txt | uniq -c 2 1
3 2
1 3
2 10
1 20
1 100

توضیح: این دستور فایل numbers.txt را به صورت عددی مرتب می‌کند، سپس uniq -c تعداد تکرار هر خط را نشان می‌دهد.

  • sort -n → مرتب‌سازی عددی
  • | → پایپ (اتصال خروجی به ورودی دستور بعدی)
  • uniq -c → شمارش تعداد تکرار هر خط

• uniq -c (شمارش تکراری‌ها)

uniq -c تعداد دفعات تکرار هر خط را قبل از آن نمایش می‌دهد.

┌──(ya3in㉿kali)-[~] └─$ cat fruits.txt apple
banana
apple
orange
apple
└─$ sort fruits.txt | uniq -c 3 apple
1 banana
1 orange

3 apple یعنی ۳ بار تکرار شده.

▍ نمایش محتوای خام فایل (od)

od مخفف Octal Dump است و محتوای فایل را به صورت خام (باینری یا هشت‌عالی) نمایش می‌دهد.

┌──(ya3in㉿kali)-[~] └─$ echo "Hello" > test.txt └─$ od test.txt 0000000 062550 066154 000012
0000005

نمایش محتوای فایل به صورت هشت‌عالی (Octal). 0000000 آدرس بایت‌هاست.

┌──(ya3in㉿kali)-[~] └─$ od -x test.txt 0000000 6548 6c6c 0a6f
0000005

نمایش با قالب هگزادسیمال (با -x).

▍ خلاصه دستورات

دستور کاربرد
cat نمایش یا اتصال فایل‌ها
paste چسباندن فایل‌ها به صورت ستونی
split تقسیم فایل به چند بخش
head نمایش ابتدای فایل (پیش‌فرض ۱۰ خط)
tail نمایش انتهای فایل (پیش‌فرض ۱۰ خط)
sort مرتب‌سازی خطوط فایل
uniq حذف خطوط تکراری مجاور
uniq -c شمارش تعداد تکرار هر خط
od نمایش محتوای خام فایل (Octal/Hex)
✅ تمرین پیشنهادی:
  • یک فایل متنی با اعداد نامرتب بسازید.
  • با sort -n آن را مرتب کنید.
  • با uniq -c تعداد تکرار اعداد را بشمارید.
  • با head و tail بخش‌هایی از فایل را ببینید.